1. Field of the Invention
The present invention relates to methods and apparatus for performing error correction on data read from memory systems (preferably integrated flash memory circuits) which are "multistate" systems in the sense that each memory cell has more than two states (each state determining a different data value). More particularly, the invention is a method and apparatus for performing error correction on data read from a multistate memory system (preferably a flash memory circuit), in which the data read from each memory cell is encoded so that in response to detection of an error in the encoded data from one memory cell, the error is corrected by changing one bit of the encoded data.
2. Description of Related Art
Throughout the specification, including in the claims, the term "connected" is used (in the context of an electronic component being "connected" to another electronic component) in a broad sense to denote that the components are electrically or electromagnetically coupled with sufficient strength under the circumstances. It is not used in a narrow sense requiring that an electrically conducting element is physically connected between the two components.
Multistate memory systems are becoming increasingly commercially important. Such systems include one or more arrays of memory elements, with each memory element having more than two states (each state determining a different data value). The synonymous terms "cell" of a memory array and "element" of a memory array are used interchangeably herein. A flash EEPROM multistate memory system is described in U.S. Pat. No. 5,043,940, issued Aug. 27, 1991, and an electrically alterable non-volatile multistate memory system is described in U.S. Pat. No. 5,394,362 issued Feb. 28, 1995.
Throughout the specification, including in the claims, the term "bit" is used herein to denote the data stored in one memory element of a memory system (which can be either a multistate memory system or a two-state memory system). In the special case of a two-state memory system, each element stores a "binary" bit (whose value can be denoted by the binary representation "0" or "1"). In the special case of a four-state memory system, each element stores a bit having one of four possible values (which can be denoted by the binary representations "00", "01", "10", and "11")
It has been proposed to design nonvolatile memory chips (integrated circuits) as multistate memory systems, so each memory element ("cell") of such a system has more than two states. Since analog values can be stored on the floating gate of a typical nonvolatile memory cell (e.g., a flash memory cell), it is possible to define more than two states for each such cell and hence reduce the area per stored bit for each cell. It is predictable that improved technology will continue to reduce the practical size of memory cells and that in some designs, a cell will be implemented as an intersection of two poly elements.
A problem with multistate storage is that by putting more states on each cell, the effective voltage range for each state becomes smaller. E.g., for a 5 volt window of operation on a floating gate (this window being determined by the particular circuitry used to "read" the cell), one can define the midpoint to be the boundary (or threshold) between the two states. Thus, a voltage stored on the gate determines a first state (corresponding to a first binary bit) if it is detected to be in the upper 2.5 volts of the window, and a voltage stored on the gate determines a second state (corresponding to a second binary bit) if it is detected to be in the lower 2.5 volts of the window. However, if a "read" circuit having the same window is used to distinguish between four states of the floating gate, each state corresponds to only 1.25 volts of the window. So, the noise margin for each state (e.g., the maximum range of voltage change, from the center of the window portion for the state, before the state is no longer valid) is reduced by a factor of two when the floating gate is used as four-state cell rather than a two-state cell.
There is also a limit to the precision with which circuitry can store an analog value on the floating gate of a nonvolatile memory cell. With today's architectures and high densities, cells across a nonvolatile memory array do not all behave identically. For these reasons, conventional circuitry for performing a program or erase of the bits in a nonvolatile memory array is typically designed to perform the task in an algorithmic manner in which the circuitry asserts an appropriate voltage level to a cell, then interrogates the value of the cell, and if the cell has not yet developed a sufficient margin, the circuitry again asserts an appropriate voltage level thereto. Using such circuitry, incremental varying of the voltage on a floating gate of each cell is not difficult, so that multistate storage becomes feasible.
To reduce the cost of nonvolatile memory systems, defective memory arrays can be tolerated and error correction employed to regain the data integrity. If one allows memory arrays having a few bad elements to be used in a system, the price of the system can be substantially reduced since much greater manufacturing yield can be attained. In order to enable the reader to more readily appreciate the present invention, we next describe (with reference to FIGS. 1 and 2) a nonvolatile memory system having conventional design, which includes conventional error detection and correction circuitry, including ECC encoder 40, ECC decoder 41, error correction unit 42, and syndrome decoder 43 (of FIG. 1).
Nonvolatile memory chip 3 of FIG. 1 includes an array 16 of nonvolatile memory cells, each cell comprising a transistor having a floating gate capable of semipermanent charge storage. The current drawn by each cell depends on the amount of charge stored on the corresponding floating gate. Thus, the charge stored on each floating gate determines a data value that is stored "semipermanently" in the corresponding cell.
In one particularly useful implementation of memory chip 3, each cell of array 16 comprises a flash memory device (a transistor). The charge stored on the floating gate of each flash memory device (and thus the data value stored by each cell) is erasable by appropriately changing the voltage applied to the gate and source (in a well known manner).
As shown in FIG. 1 (a simplified block diagram of nonvolatile memory chip 3), chip 3 includes a host interface 10 (including an I/O buffer for input data received from an external device and output data to be asserted to an external device), an address buffer 30, row decoder circuit (X address decoder) 12, column multiplexer circuit (Y multiplexer) 14, memory array 16 (comprising columns of nonvolatile memory cells, such as column 16A), sense amplifier circuit 15, and control unit 29.
Address bits received at interface 10 from an external device are asserted to address buffer 30. In response to a set of address bits A0 through Ap received from an external device, address bits A0 through An are asserted from buffer 30 to X decoder 12, and address bits An+1 through Ap are asserted from buffer 30 to Y multiplexer 14.
Chip 3 executes a write operation by receiving data bits (to be written to memory array 16) from an external device at interface 10, buffering the data in interface 10, including ECC check bits with the data (in unit 40), and then writing the data (and ECC check bits) to the appropriate memory cells of array 16. Chip 3 can also be controlled to execute a read operation in which data that has been read from array 16 undergoes error detection and correction in units 41, 42, and 43, and the corrected data is then buffered in interface 10 and asserted to the external device.
Since the cells of array 16 are flash memory cells, data is typically written to cells which have been erased. Each cell is either allowed to remain in the erased state, or is programmed to a desired state (a single programmed state when array 16 is operated as a binary memory, and a selected one of at least two different programmed states when array 16 is operated as a multistate memory) by applying appropriate voltages to the source, drain, and control gate of the cell for an appropriate time period (using write driver circuitry within circuit 14). This causes electrons to tunnel or be injected from a channel region to a floating gate. The amount of charge residing on the floating gate determines the voltage required on the control gate in order to cause the cell to conduct current between the source and drain regions.
In typical implementations, the FIG. 1 system is designed so that when it executes a write or read operation, it processes multiple bits of data in parallel. When executing a write operation with such an implementation of the system, sets of X bits of input data (where X is an integer greater than one) are received in parallel at ECC encoder 40, and encoder 40 generates M check bits for each X-bit set of data (typically X=8, and M=4). It is irrelevant to operation of ECC encoder 40 whether each set of X binary data bits that encoder 40 receives is to be stored in a single cell of array 16 (as where array 16 is operated as a multistate memory) or in X different cells of array 16 (as where each cell of array 16 is operated as a binary memory device). Encoder 40 asserts each set of X+M data and check bits in parallel to circuit 14 which causes them (or a sequence of subsets of them) to be written in parallel to cells of array 16 determined by corresponding address bits supplied to circuits 12 and 14. When each cell of array 16 is operated as a multistate device having four states, the write driver circuitry within circuit 14 writes two bits (two data bits or two check bits) in each cell by placing the cell in one of three programmed states (or allowing the cell to remain in an erased state).
When executing a read operation with the implementation of the FIG. 1 system described in the previous paragraph, the system reads Z-bit sets of cells in parallel (Z is an integer, typically equal to four or eight). In reading such a set of cells, sense amplifier circuit 15 outputs ZN binary bits indicative of the data stored in the Z cells (where each cell has one of 2.sup.N states). S-bit subsets of each set of ZN binary bits are asserted in parallel from circuit 15 to ECC decoder 41 (where S can be equal to or less than ZN. Decoder 41 generates T syndrome bits from each ZN-bit set that it receives (typically T=M) and asserts the syndrome bits in parallel to syndrome decoder 43. Decoder 41 also asserts a set of P binary bits of uncorrected data to correction unit 42. The uncorrected data bits may be identical to the P input data bits written to the cells being read, or they may differ (by one or more erroneous bits) from the P input data bits. Syndrome decoder 43 decodes the syndrome bits to generate a set of P correction bits in response to each set of syndrome bits that is indicative of one or more correctable errors, and decoder 43 asserts such set of correction bits in parallel to correction unit 42. Unit 42 processes each set of correction bits with the corresponding set of uncorrected bits to generate a set of P corrected bits, and asserts the corrected bits to interface 10 (to enable them to be asserted to an external device). Each set of corrected bits output from unit 42 bits comprises original data bits (data bits in the bit stream received by unit 41 which were determined not to be erroneous) and replacement data bits (bits which replace those data bits in the bit stream received by unit 41 which were determined to be erroneous).
Typically, decoder 43 includes circuitry for asserting a failure signal in response to a set of syndrome bits indicative of non-correctable errors in the corresponding set of uncorrected data. Such failure signal is fed back to control unit 29 (to cause unit 29 to assert appropriate status and control signals in response thereto) and/or asserted to interface 10 (for transmission to an external device).
Each of the cells of memory array circuit 16 is indexed by a row index (an "X" index determined by decoder circuit 12) and a column index (a "Y" index output determined by multiplexer circuit 14). FIG. 2 is a simplified schematic diagram of two columns of cells of memory array 16 (with one column, e.g., the column on the right, corresponding to column 16A of FIG. 1). The column on the left side of FIG. 2 comprises "n" memory cells, each cell implemented by one of floating-gate N-channel transistors N1, N3, . . . , Nn. The drain of each of transistors N1-Nn is connected to bitline 13, and the gate of each is connected to a different wordline (a different one of wordline 0 through wordline n). The column on the right side of FIG. 2 also comprises "n" memory cells, each cell implemented by one of floating-gate N-channel transistors N2, N4, . . . , Nm. The drain of each of transistors N2-Nm is connected to bitline 23, and the gate of each is connected to a different wordline (a different one of wordline 0 through wordline n). The source of each of transistors N1, N3, . . . , Nn, and N2, N4, . . . , Nm is held at a source potential (which is usually ground potential for the chip during a program or read operation).
Each of transistors N1, N3, . . . , Nn, and N2, N4, . . . , Nm has a floating gate capable of semipermanent charge storage. The current drawn by each cell (i.e., by each of transistors N1, N3, . . . , Nn, and N2, N4, . . . , Nm) depends on the amount of charge stored on the corresponding floating gate. Thus, the charge stored on each floating gate determines a data value that is stored semipermanently in the corresponding cell. In cases in which each of transistors N1, N3, . . . , Nn, N2, N4, . . . , and Nm is a flash memory device (as indicated in FIG. 2 by the symbol employed to denote each of transistors N1, N3, Nn, N2, N4, . . . , and Nm), the charge stored on the floating gate of each is erasable (and thus the data value stored by each cell is erasable) by appropriately changing the voltage applied to the gate and source (in a well known manner).
In response to each set of address bits A.sub.n+1 -A.sub.p, circuit 14 (of FIG. 1) determines a column address which selects one (or a set of two or more) of the columns of cells of array 16 (connecting the bitline of the selected column to Node 1 of FIG. 1), and in response to address bits A.sub.0 -A.sub.n, circuit 12 (of FIG. 1) determines a row address which selects one cell in each selected column. Consider an example in which the column address selects the column on the right side of FIG. 2 (the column including bitline 23) and the row address selects the cell connected along wordline 0 (the cell comprising transistor N2). To read the data value stored in the selected cell, a signal (a current signal) indicative of such value is provided from the cell's drain (the drain of . . . , transistor N2, in the example), through bitline 23 and circuit 14, to Node 1 of FIG. 1. To write a data value to the selected cell, appropriate voltages are provided to the cell's source, gate, and drain.
More specifically, chip 3 of FIG. 1 executes a read operation as follows. In response to a read command (supplied from control unit 29, or from an external device through interface 10), a current signal indicative of data values stored in the cells of array 16 (a "data signal") determined by the current row and column addresses is supplied from the drain of each selected cell through the bitline of each selected cell and then through circuit 14 to sense amplifier 15. This data signal is processed in amplifier 15 (in a manner to be described below), the output of amplifier 15 undergoes error detection and correction in circuits 41, 42, and 43, and the corrected data output from unit 42 is asserted to interface 10.
The following description of the manner in which sense amplifier 15 and units 41, 42, and 43 process the data signal from each selected cell of array 16 applies to an operating mode of chip 3 in which chip 3 operates as a two-state memory system (so that each cell of array 16 determines a binary bit). A predetermined voltage is applied to the control gates of each selected cell of array 16 and the cells are read (i.e., the predetermined voltage is applied to all or selected ones of the wordlines of array 16 and the cells connected to such wordlines are read) using sense amplifier 15. If a selected cell is in an erased state, the cell conducts a first current and the data signal indicative of this current is converted to a first voltage in sense amplifier 15. If the selected cell is in the other state (the programmed state), it conducts a second current and the data signal indicative of this current is converted to a second voltage in sense amplifier 15 (the "second current" flowing through a programmed cell is negligibly small when the cell is read by a typical, conventional read operation). Sense amplifier 15 determines the state of each selected cell (i.e., whether it is programmed or erased corresponding to a binary value of 0 or 1, respectively) by comparing the voltage indicative of the cell state to a reference voltage. The outcome of each such comparison (an output which is either high or low, corresponding to a binary value of one or zero) is sent from sense amplifier 15 to ECC decoder 41. In response, decoder 41 and circuits 42 and 43 operate in the manner described above to assert a set of error-corrected data bits to interface 10 (unless decoder circuit 43 determines that the bits output from sense amplifier 15 contain uncorrectable errors, in which case decoder circuit 43 asserts the above-described "failure signal").
Circuits 40, 41, 42, and 43 implement any conventional error detection and correction operation (many such operations are well known).
U.S. Pat. No. 5,233,610, issued on Aug. 3, 1993, describes a non-volatile memory system which includes an array of memory cells and conventional circuitry for generating ECC check bits, writing the ECC check bits to an array with corresponding data bits of interest, and performing error detection and correction on data read from the array. The disclosure of U.S. Pat. No. 5,233,610 is incorporated herein by reference.
In conventional two-state memory systems, it is known to employ an ECC encoder (e.g., unit 40) and error detection and correction circuitry (e.g., units 41-43) to detect errors in single binary bits (each binary bit indicative of the state of one memory cell) and to correct each detected error by changing each erroneous binary bit. It had not been known until the present invention how efficiently to implement error correction in a multistate memory system.
Memory chip 3 of FIG. 1 can also execute an erase operation in which all or selected ones of the cells of memory array 16 are erased in response to a sequence of one or more commands (e.g., an "Erase Setup" command followed by an "Erase Confirm" command), by discharging a quantity of charge stored on the floating gate of each cell. Typically, all cells of array 16 or large blocks of such cells are erased at the same or substantially the same time during an erase operation. Each erase operation comprises a sequence of steps, including verification steps for verifying that the cells have desired threshold voltages at each of one or more stages of the erase operation.
More specifically, if cells of memory array 16 of FIG. 1 are to be erased, an "Erase Setup" command and then an "Erase Confirm" command are sent from an external device to interface 10. The commands are transferred from interface 10 to control unit 29. Control unit 29, which typically includes command execution logic and a state machine, processes the command to generate instruction data, and supplies the instruction data to circuit 14 and sense amplifier 15 (and to other components of memory chip 3 of FIG. 1) to cause chip 3 to execute a sequence of steps required for erasing the specified cells of array 16. These steps typically include verification steps for verifying that one or more of the cells have desired threshold voltages at each of one or more stages of the erase operation.
A conventional memory erase operation, of the type implemented by a memory system identical in relevant respects to chip 3 of FIG. 1, is described in greater detail in U.S. patent application Ser. No. 08/506,970, filed Jul. 28, 1995 (and assigned to the assignee of the present application), the disclosure of which is incorporated herein in full by reference.
Although conventional error detection and correction of the type implemented by ECC encoder 40 and error detection and correction circuitry 41-43 of FIG. 1 is desirable in two-state memory systems (for the reason noted above) it is even more desirable to implement error detection and correction in multistate memory systems due to the reduced noise margin per state in the latter systems (as noted above). However, to do so requires using some of the cells of the array to store ECC check bits, which reduces the array's effective capacity for storing data bits of interest. The present invention is based on the inventor's recognition that:
1. the effective capacity of a memory array (operated as an array of multistate cells) can be maximized by minimizing the number of ECC check bits that must be stored with any given number of data bits to enable performance of error detection and correction on the data after it has been stored in the array; and PA1 2. if a specially chosen encoding method is employed to generate encoded data fields (each field typically consisting of two or more binary bits) which represent data (and ECC check bits) read from each of a set of multistate memory cells, error detection and correction can be performed on the data (after it has been read from the cells) in a manner requiring storage of a minimal number of ECC check bits with the data of interest.
Until the present invention, it had not been known to design or operate a multistate memory system to implement error detection and correction efficiently, in a manner minimizing the number of ECC check bits that must be stored with the data of interest to enable performance of the error detection and correction.